草庐IT

c++ - RAII 和 C++ STL

全部标签

c++ - 如何使用 C++ STL 算法重写嵌套循环?

循环很简单,但我似乎无法使用STL算法来给出下面相同的嵌套循环。constinta_size=5;//inputconstintc_size=2;//outputconstintb_size=a_size*c_size;//multipliersstd::vectora(a_size);std::vectorb(b_size);std::vectorc(c_size);//fillaandbwithdata//thisnestedloopfor(inti=0;i我想这样做的原因是为了Boost.Compute库,它会使用类似STL的算法(std::transform、std::for_

c++ - 如何在 Windows 内核中使用 std::map? STL端口?

在我最近的项目中,强烈要求使用std::map这样的数据结构。但是,std::map的默认实现使用C++异常,这在Windows内核中是不允许的。我认为很难在短时间内重新发明std::map而没有任何错误或性能损失。所以,我想知道在Windows内核中是否存在std::map的替代。STLPort可能是一个候选者。但我不知道如何仅提取其std::map并禁用C++异常。 最佳答案 内核模式下的C++代码在没有(完整的)标准库的问题之前有几个(严重的)限制。参见http://msdn.microsoft.com/en-us/libra

C++ STL 的 copy() 异常安全

如果我这样做了std::copy(source,source+size,destination);我有强大的异常安全保证吗?IE。如果std::copy抛出,destination保持不变? 最佳答案 附录E:标准库异常安全来自Stroustrop的C++编程语言是freelyviewablefromhiswebsite.由此而来:Thecopy()algorithm(§18.6.1)doesnotofferthestrongexception-safetyguarantee.Itdoesnotguaranteethatitwill

c++ - STL 容器 : Constructor's Allocator parameter and scoped allocators

STL容器有一个模板参数可以选择自定义分配器。花了一段时间,但我想我明白它是如何工作的。不知何故,它并不是很好,因为给定的分配器类型没有直接使用,而是反弹到另一种类型的分配器。我终于可以使用它了。看完API我认识到也有可能将分配器作为构造函数参数。但是,如果容器在内部从模板参数重新绑定(bind)给定的分配器,我怎么知道容器使用哪种分配器?此外,我读到C++11现在使用范围分配器,它允许将容器的分配器重用于其包含的容器。启用了作用域分配器的容器的实现与不知道作用域容器的容器的实现有何不同?很遗憾,我找不到任何可以解释这一点的东西。感谢您的回答! 最佳答案

c++ - 使用 STL 排序功能对列表进行排序

我正在尝试按降序对包含struct项的列表(类的一部分)进行排序,但它无法编译:error:nomatchfor'operator-'in'__last-__first'sort(Result.poly.begin(),Result.poly.end(),SortDescending());这里是SortDescending:structSortDescending{booloperator()(constterm&t1,constterm&t2){returnt2.pow谁能告诉我怎么了? 最佳答案 标准算法std::sort需要

c++ - C++ 的 RAII 教程

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describetheproblem以及到目前为止为解决这个问题所做的工作。关闭9年前。Improvethisquestion我想学习如何在c++中使用RAII。我想我知道它是什么,但不知道如何在我的程序中实现它。快速谷歌搜索没有显示任何好的教程。有没有人有好的链接可以教我RAII? 最佳答案 这没什么

【剖析STL】String

1.什么是STL?标准模板库(StandardTemplateLibrary,STL)是惠普实验室开发的一系列软件的统称。它是由AlexanderStepanov、MengLee和DavidRMusser在惠普实验室工作时所开发出来的。虽说它主要出现到C++中,但在被引入C++之前该技术就已经存在了很长时间。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。🔥标准模板库是一个C++软件库,大量影响了C++标准程序库但并非是

c++ - STL 中不必要的锁定? (Visual C++ Express)

我正在尝试构建一个可以扩展到多个内核的俄罗斯方blockAI算法。在我的测试中,使用多线程比使用单线程慢。经过一些研究,我发现我的线程大部分时间都在等待_Lockit_Lock(_LOCK_DEBUG)。.这是一个screenshot.如您所见,锁定应用于局部变量,无论如何它都不需要任何锁定!我的问题是:为什么STL会锁定这个vector?如何让我的程序更快?(使用数组?)更新我通过在我的VisualStudio项目中设置这些命令行选项来消除锁定:/D"_HAS_ITERATOR_DEBUGGING=0"/D"_SECURE_SCL=0"将此应用于解决方案文件中的所有项目非常重要,否则

c++ - STL vector 之间的自动转换

我想要的是复制一个std::vector到另一个std::vector带赋值运算符,其中myStruct可以分配一个int.所以我写了这段代码:#include#includeusingnamespacestd;structmyStruct{myStruct(int&a):_val(a){}myStruct(int&&a):_val(a){}myStruct&operator=(int&a){_val=a;return*this;}int_val;};intmain(){vectorivec;ivec.push_back(1);vectorsvec=ivec;return0;}它给我错

c++ - 在 std::pair 中使用 `std::make_pair`:C++ STL

我多次注意到,每当需要为(新)std::pair赋值时,都会使用std::make_pair。但是我没有发现make_pair函数有任何用处,因为我们可以直接输入值对,然后随意修改它们。例如:std::pairnewp;std::cin>>newp.first>>newp.second;newp.first=-1;那么这个函数到底有什么用呢? 最佳答案 std::make_pair用于创建具有指定值的std::pair对象。Createsastd::pairobject,deducingthetargettypefromthetyp